﻿/*
 *  void-Delegate TankfüllstandBeobachter mit Parameter vom Typ PKW.

 *  Enum TankfüllstandLeuchte mit den Farben GRÜN, GELB und ROT.

 *  Klasse PKW
 *      mit einer TankfüllstandLeuchte,
 *      einem öffentlichen Attribut vom Typ TankfüllstandBeobachter als Event,
 *      einem privaten tankfüllstand und einer öffentlichen addTankfüllstand-Methode,
 *          die den Tankfüllstand erhöhen kann und, wenn der Tankfüllstand größer gleich 15 ist, die Farbe der Leuchte auf Grün setzt.
 *      einen Konstruktor, der den Tankfüllstand initialisiert,
 *      eine void-Methode Fahren(), die in einer Schleife "Brumm..." ausgibt und den Tankfüllstand um 1 reduziert, solange der Tankfüllstand größer 0 ist
 *          und weiterhin, wenn der Tankfüllstand kleiner 15 ist, die Leuchte auf Gelb stellt und das TankfüllstandBeobachter-Event auslöst,
 *          und wenn der Tankfüllstand kleiner 10 ist, die Leuchte auf Rot stellt und das TankfüllstandBeobachter-Event auslöst.

 *  Klasse Fahrer,
 *      mit einer Methode "Tanken", die den Tankfüllstand eines übergebenen PKW-Objektes erhöhen kann.
 *      Und einer Methode "OnTankfüllstandNiedrig", welche zum Delegate passt. Sie fragt aus dem übergebenen PKW die Farbe der TankfüllstandLeuchte ab
 *          und ist sie Gelb, sagt der Fahrer "Ach, hat noch Zeit...",
 *          ist sie Rot, sagt der Fahrer "Jetzt aber dringend tanken..." und tankt anschließend den PKW.
 *
 */


namespace Lösungen
{
    class Program
    {
        public static void Main(string[] args)
        {
            PKW pkw = new PKW(20);
            Fahrer fahrer = new Fahrer();
            pkw.TankfüllstandEvent += fahrer.OnTankfüllstandNiedrig;

            pkw.Fahren();
        }

    }
}